/*
 * Copyright (c) 2022 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef OLA_PAL_NETWORK_H
#define OLA_PAL_NETWORK_H

#ifdef __cplusplus
extern "C" {
#endif

/*
 * 功能: 启动对应名称的softap
 * 参数: ssid, softap的名称
 *       ssidLen, ssid的长度
 * 返回: 0, 表示启动成功
 *       -1, 表示启动失败
 */
int OlaSoftApStart(const char *ssid, unsigned int ssidLen);

/*
 * 功能: 关闭softap
 * 返回: 0, 表示关闭成功
 *       -1, 表示关闭失败
 */
int OlaSoftApStop(void);

/*
 * 功能: 获取网络状态
 * 参数: state, 网络状态标记。为0表示网络断开或已连接但网卡未分配得ip, state为1表示已连接且分配得ip
 * 返回: 0, 表示获取成功
 *       -1, 表示获取失败
 */
int OlaGetNetworkState(int *state);

/*
 * 功能: 获取IP地址
 * 参数: ipAddr, 存放ip地址的缓冲区
 *       len, 缓冲区长度
 * 返回: 0, 表示获取成功
 *       -1, 表示获取失败
 * 注意: ipAddr为点分十进制格式
 */
int OlaGetIpAddr(char *ipAddr, unsigned char len);

/*
 * 功能: 获取网络MAC地址
 * 参数: mac, 存放mac地址的缓冲区
 *       len, 缓冲区长度
 * 返回: 0, 表示获取成功
 *       -1, 表示获取失败
 */
int OlaGetMacAddr(unsigned char *mac, unsigned char len);

/*
 * 功能: 设置wifi信息
 * 参数: ssid, wifi的ssid
 *       ssidLen, ssid长度
 *       pwd, wifi密码
 *       pwdLen, 密码长度
 * 返回: 0, 表示设置成功
 *       -1, 表示设置失败
 */
int OlaSetWifiInfo(const char *ssid, unsigned int ssidLen, const char *pwd, unsigned int pwdLen);

/*
 * 功能: 清除wifi信息
 * 返回: 0, 表示清除成功
 *       -1, 表示清除失败
 */
int OlaClearWifiInfo(void);

/*
 * 功能: 连接wifi
 * 返回: 0, 表示设置成功
 *       -1, 表示设置失败
 */
int OlaConnectWifi(void);

/*
 * 功能: 断开wifi
 * 返回: 0, 表示设置成功
 *       -1, 表示设置失败
 */
int OlaDisconnectWifi(void);

#ifdef __cplusplus
}
#endif

#endif /* OLA_PAL_NETWORK_H */
